home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / comm / mail / YamNet.lha / rexxtra12.lha / rexx / C2Lharc.rexx < prev    next >
OS/2 REXX Batch file  |  1990-03-18  |  3KB  |  125 lines

  1. /* C2Lharc.rexx */
  2.  
  3. /*
  4.      Format
  5.  
  6.        C2Lharc files ... [DELETE] [TO <dir>]
  7.  
  8.    Convert all ARC, ZOO, PAK file into LHARC format. DELETE deletes
  9.    original file. TO <dir> specifies where to place .LZH file. If
  10.    not present, sent to same as original.
  11.  
  12. */
  13.  
  14. signal on failure; signal off error; signal on syntax; signal on break_c
  15. options failat 10
  16. call addlib 'rexxextra.library',-20,-30,0
  17.  
  18. facility = 'C2Lharc'
  19. retcode = 0
  20. dtemplate = 'FILES/...,TO/K,DELETE/S'
  21. template  = 'DELETE/S,TO/K,FILES/L'
  22. args. = ''
  23.  
  24. parse arg g_c
  25. do while g_c='?'
  26.   options prompt dtemplate': '  /* this template is      */
  27.   parse pull g_c        /* displayed to the user */
  28.   if g_c='?' then do
  29.     g_s=sourceline(3)
  30.     if pos('/*',g_s)=0 then break; if pos('*/',g_s)>0 then break
  31.     say
  32.     g_s=sourceline(4)
  33.     do i=5 while pos('*/',g_s)=0; say g_s; g_s=sourceline(i); end
  34.     say
  35.     end
  36.   end
  37. interpret Cparse(g_c,template,'args')
  38. if args.ERRCODE > 1 then do; say facility'-E-BADARGS,' args.ERRTEXT; exit 5; end
  39.  
  40. tdevice = 'USER:'
  41. tdir = facility||pragma('ID')||'Temp'
  42. slog = facility||pragma('ID')||'Sorc:'
  43. dlog = facility||pragma('ID')||'Dest:'
  44. wlog = facility||pragma('ID')||'Work:'
  45. tlog = tdir':'
  46. lharcmd = 'c:lharc -a -r -P-1 m'
  47. mayoverflow = ~args.DELETE & args.TO == ''
  48.  
  49. 'assign' slog '""'
  50. 'assign' dlog '"'args.TO'"'
  51. 'assign' wlog tdevice
  52. if ~exists(tdevice||tdir) then 'makedir' tdevice||tdir
  53. 'assign 'tlog  tdevice||tdir
  54. 'pushcd 'tlog
  55. 'delete * all'
  56.  
  57. if mayoverflow then do
  58.   say facility'-W-OVRFLW, Source disk may overflow'
  59.   end
  60.  
  61. do i = 1 to args.FILES.0
  62.   do j = 1 to filelist(slog||args.FILES.i,'LIST','F')
  63.     sfile = list.j
  64.     retcode = UnDo(sfile)
  65.     if retcode > 0 then do
  66.       say facility'-E-XTRACT, Error extracting' sfile'. Aborting this file'
  67.       end
  68.     else do
  69.       dfile = Fparse(pragma('D'),wlog||'.LZH',sfile)
  70.       'Delete' tlog'#? all quiet'
  71.       ''lharcmd dfile tlog'#?'
  72.       retcode = rc
  73.       if retcode > 0 then do
  74.     say facility'-E-CREATE, Error creating' dfile'. Aborting this file'
  75.     end
  76.       else do
  77.     if args.DELETE then 'Delete' sfile
  78.     'Move' dfile dlog
  79.     end
  80.       end
  81.     end
  82.   end
  83.  
  84. GetOut:
  85.   'popcd'
  86.   'Assign' wlog
  87.   'Assign' slog
  88.   'Assign' dlog
  89.   'Assign' tlog
  90.   'Delete' tdevice||tdir 'all quiet'
  91.   exit retcode
  92.  
  93. UnDo: procedure
  94.   parse arg file
  95.   retcode = 0
  96.   cmd. = 'BAD'
  97.   cmd.ARC = 'c:arc x'
  98.   cmd.ZOO = 'c:zoo xO//'
  99.   cmd.PAK = ''
  100.   cmd.LZH = 'c:lharc -a -r -P-1 x'
  101.   cmd.ZIP = 'c:UnZip'
  102.   ftype = upper(fparse(pragma('D'),file,,,'T'))
  103.   doit = cmd.ftype
  104.   if doit ~= 'BAD' then do
  105.     say doit file
  106.     ''doit file
  107.     retcode = rc
  108.     end
  109.    else retcode = 5
  110.   return retcode
  111.  
  112. break_c:
  113. break_d:
  114. break_e:
  115. break_f:
  116.   say facility'-E-BREAK, Control-C interrupt'
  117.   exit 20
  118. failure:
  119.   say facility'-E-FAIL, Line:' sigl', Error:' rc; retcode = rc; signal GetOut
  120. syntax:
  121.   say facility'-E-SYNTAX, Line:' sigl', Error:' rc; retcode = rc; signal GetOut
  122. error:
  123.   say facility'-E-ERROR, Line:' sigl', Error:' rc; retcode = rc; signal GetOut
  124.  
  125.